home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / t_os / et / src / custom.c < prev    next >
Text File  |  1993-07-08  |  2KB  |  99 lines

  1. #include  <stdio.h> 
  2. #include  <string.h>
  3. #include  <stdlib.h>
  4. #include  <ctype.h>
  5.  
  6. int   set_digit(char s_a[], char *c_p, int i);
  7. int   set_i(char s_a[], char *c_p, int i);
  8. int   set_drive(char s_a[], char *c_p, int i);
  9. char  nl_a[] = {0x0d, 0x0a, '\0'};
  10. void  main()/*custom*/
  11. {
  12.   FILE  *File, *Temp;
  13.   char  *c_p, c_a[80], *s_p, s_a[80];
  14.   int   i;
  15.   static char op_a[] = "IMVRSTUWX";
  16.   
  17.   File = fopen("custom.h", "rb");
  18.   Temp = fopen("etc.h", "wb");
  19.   while (fgets(c_a, 999, File)) {
  20.     c_p = c_a;
  21.     while (*c_p && *c_p++ != '-')
  22.       ;
  23.     if (!*c_p)
  24.       continue;
  25.     while (*c_p == ' ' || *c_p == '\t')
  26.       c_p++;
  27.     i = islower(*c_p) ? *c_p - 'a' + 'A' : *c_p;
  28.     if (!strchr(op_a, i))
  29.       continue;
  30.     strcpy(s_a, "#define\to_");
  31.     switch(i) {
  32.     case 'I':
  33.     case 'M':
  34.       i = set_digit(s_a, c_p, i);
  35.       if (!i)
  36.         continue;
  37.       break;
  38.     case 'V':
  39.     case 'R':
  40.     case 'S':
  41.     case 'T':
  42.     case 'U':
  43.     case 'X':
  44.       i = set_i(s_a, c_p, i);
  45.       break;
  46.     case 'W':
  47.       i = set_drive(s_a, c_p, i);
  48.       if (!i)
  49.         continue;
  50.       break;
  51.     }
  52.     fwrite(s_a, sizeof(char), i, Temp);
  53.   }
  54.   fclose(File);
  55.   fclose(Temp);
  56. }
  57. int   set_digit(char s_a[], char *c_p, int i)/*custom*/
  58. {
  59.   static char c_a[] = "?\t";
  60.   char  *s_p;
  61.   
  62.   c_a[0] = i;
  63.   strcat(s_a, c_a);
  64.   c_p++;
  65.   s_p = c_p;
  66.   if (!isdigit(*c_p))
  67.     return(0);
  68.   while (isdigit(*c_p))
  69.     c_p++;
  70.   *c_p = '\0';
  71.   strcat(s_a, s_p);
  72.   strcat(s_a, nl_a);
  73.   return(strlen(s_a));
  74. }
  75. int   set_i(char s_a[], char *c_p, int i)/*custom*/
  76. {
  77.   static char c_a[] = "?";
  78.  
  79.   c_a[0] = i;
  80.   strcat(s_a, c_a);
  81.   strcat(s_a, nl_a);
  82.   return(strlen(s_a));
  83. }
  84. int   set_drive(char s_a[], char *c_p, int i)/*custom*/
  85. {
  86.   static char c_a[] = "?\t\047?\047";
  87.   int   j;
  88.  
  89.   c_a[0] = i;
  90.   c_p++;
  91.   if (!islower(*c_p) && !isupper(*c_p))
  92.     return(0);
  93.   j = islower(*c_p) ? *c_p - 'a' + 'A' : *c_p;
  94.   c_a[3] = j;
  95.   strcat(s_a, c_a);
  96.   strcat(s_a, nl_a);
  97.   return(strlen(s_a));
  98. }
  99.